﻿#ifndef TIME_PERIOD_H
#define TIME_PERIOD_H

#include <stdbool.h>

#ifdef __cplusplus
extern "C" {
#endif

// 定义时间段类型枚举
typedef enum {
    PERIOD_UNKNOWN,      // 未知时间段
    PEAK_HIGH,           // 早晚高峰期
    PEAK_LOW,            // 小高峰期
    STEADY,              // 平稳期
    LOW                  // 低谷期
} PeriodType;

// 定义时间范围结构体
typedef struct {
    int start_hour;
    int start_min;
    int end_hour;
    int end_min;
    PeriodType type;
} TimeRange;

// 外部常量声明
extern const TimeRange time_ranges[];
extern const int num_ranges;

// 函数声明

/**
 * 检查当前时间是否在给定时间范围内
 * @param hour 小时 (0-23)
 * @param min 分钟 (0-59)
 * @param range 时间范围指针
 * @return true 如果在范围内，false 否则
 */
bool is_in_range(int hour, int min, const TimeRange* range);

/**
 * 获取当前时间段类型
 * @param hour 小时 (0-23)
 * @param min 分钟 (0-59)
 * @return 时间段类型枚举值
 */
PeriodType get_current_period(int hour, int min);

/**
 * 将时间段类型转换为可读字符串
 * @param type 时间段类型枚举值
 * @return 对应的中文字符串
 */
const char* period_type_to_string(PeriodType type);

#ifdef __cplusplus
}
#endif

#endif // TIME_PERIOD_H 